package com.springboot.ww.platform.pd.order.service;

import com.springboot.ww.platform.pd.dto.PdStoreTokenVO;
import com.springboot.ww.platform.pd.order.api.*;

import java.util.Date;
import java.util.List;

/**
 * 描述：拼多多接口代理类
 *
 * @author 🧑 ‍wanwei
 * @since 2024-05-13 18:10
 */
public interface IPdProxy {
    /**
     * 根据regionId 获取域名
     * @param regionId
     * @return
     */
    String getDoMainByRegionId(int regionId);

    /**
     * 根据平台单号 获取域名 （平台单号内有域名信息）
     * @param platOrderId
     * @return
     */
    String getDoMainByPlatOrderId(String platOrderId);


    /**
     * 获取订单列表
     *
     * @param pdGrabListReq
     * @param storeVO
     * @return
     */
    List<PdOrderListResp.ResultBeanX.ResultBean.PageItemsBean> getOrderList(PdGrabListReq pdGrabListReq, PdStoreTokenVO storeVO);


    /**
     * 获取订单发货地址信息
     *
     * @param platOrderId
     * @param storeVO
     * @param regionId
     * @return
     */
    PdReceiverResp.ResultBeanX.ResultBean getReceiverAddress(String platOrderId, int regionId, PdStoreTokenVO storeVO, boolean throwFlag);


    /**
     * 获取标发货物流商id
     *
     * @param storeVO
     * @param regionId
     * @param providerName
     * @return
     */
    String getCarrierId(PdStoreTokenVO storeVO,int regionId,String providerName);


    /**
     * 标记发货
     *
     * @param dto
     * @param storeVO
     */
    void shipmentConfirm(PdMarkProxyDTO dto, PdStoreTokenVO storeVO);

//    /**
//     * 获取listing
//     * @param tokenVO
//     * @param page
//     * @return
//     */
//    List<PdListingResp.ResultBean.DataBean> getListingAll(PdStoreTokenVO tokenVO, int page);

    /**
     * 获取listing
     * @param tokenVO
     * @param page
     * @return
     */
    List<PdListingResp.ResultBean.DataBean> getListing(PdStoreTokenVO tokenVO, int page, Date timeStart);

//    /**
//     * 获取listing价格
//     *
//     * @param tokenVO
//     * @param goodsId
//     * @param skuId
//     * @return
//     */
//    PdPriceResp.ResultBean.SkuListBean getPrice(PdStoreTokenVO tokenVO, Long goodsId, Long skuId);

    /**
     * 获取标发货信息
     *
     * @param pdStoreTokenVO
     * @param parentOrderSn
     * @param orderSn
     * @return
     */
    PdShipmentResp.ResultBeanX.ResultBean.ShipmentInfoDTOBean getShipmentGet(PdStoreTokenVO pdStoreTokenVO, String parentOrderSn, String orderSn);

    /**
     * 标发货更新接口
     *
     * @param pdStoreTokenVO
     * @param platOrderId
     * @param pdMarkUpdateReq
     */
    void shipmentUpdate(PdStoreTokenVO pdStoreTokenVO,String platOrderId,PdMarkUpdateReq pdMarkUpdateReq);


    /**
     * 查询未标发货包裹
     *
     * @param pdStoreTokenVO
     * @return
     */
    List<PdUnShipPackageResp.ResultDTO.UnshippedPackageDTO> getUnShipPackageResp(PdStoreTokenVO pdStoreTokenVO);

    /**
     * 确认包裹发货接口
     *
     * @param token
     * @param pdShippedConfirmReq
     */
    String packageConfirm(PdStoreTokenVO token, PdShippedConfirmReq pdShippedConfirmReq);

    /**
     *
     * 获取平台仓库
     *
     * @param storeVO
     * @param warehouseCode
     * @return
     */
    String getWarehouseId(PdStoreTokenVO storeVO, String warehouseCode);


    /**
     * post请求
     *
     * @param storeVO
     * @param body
     * @return
     */
    String postUS(PdStoreTokenVO storeVO, String body);
}
